Synapse-spojeni pomoci TUDPBlockSocket

Otázka od: Vaclav Riha - Soft Consult

5. 4. 2004 13:57

V programu bych chtel pouzivat pro komunikaci mezi aplikacnim serverem a
klienty na stanicich Synapsy.

Chtel bych se zeptat zkusenych uzivatelu Sysnapse, zda je lepsi pro
posilani zprav pres TUDPBlockSocket pred kazdou zpravou volat
Connect a po zprave zase CloseSocket (viz priklad), nebo je lepsi otevrit
spojeni pri inicializaci programu a uzavrit pri zavirani programu a po
celou dobu prace programu nechat spojeni bezet. Funguje me oboje.

priklad:
 FUDPSocket.Connect(AppServerIP, IntToStr(AppServerPort));
 Result:=FUDPSocket.LastError=0; if not Result then Exit;
 FUDPSocket.SendString('XXXXXXXXXX'+#13#10);
 FUDPSocket.CloseSocket;

S pozdravem Vaclav Riha


Odpovedá: Lukas Gebauer

5. 4. 2004 14:22

> Chtel bych se zeptat zkusenych uzivatelu Sysnapse, zda je lepsi pro
> posilani zprav pres TUDPBlockSocket pred kazdou zpravou volat
> Connect a po zprave zase CloseSocket (viz priklad), nebo je lepsi otevrit
> spojeni pri inicializaci programu a uzavrit pri zavirani programu a po
> celou dobu prace programu nechat spojeni bezet. Funguje me oboje.

Vtip je v tom, ze pri pouziti UDP protokolu zadne spojeni neexistuje!
  Metoda connect u TUDPblocksocket nedela zadne spojeni, jen do
internich struktur Synapse poznamena, na jakou adresu a port budou
nasledujici odesilana data posilana.

A kdyz neexistuje spojeni, neni treba spojeni ani zavirat. je mozne
vesele volat treba:
connect na jednu adresu
sendstring cehosi
connect na jinou adresu
sendstring cehosi jineho
atd.

Closesocket v pripade UDP protokolu jen zlikviduje socket, ktery se
pak pri nejblizsim dalsim pouziti opet automaticky vytvori. Oboje te
stoji nejaky ten strojovy cas!

Proto je lepsi pro optimalni vykon Closesocket nevolat. Connect muzes
volat jak je libo, kdykoliv potrebujes zmenit cilovou adresu pro UDP
packet, treba jen jednopu na zacatku programu, pokud odesilas jen na
jednu a tutez adresu.

Ale bacha na okamzik, kdy data ctes! Po precteni nejakych dat z UDP
mas cilovou adresu automaticky nastavenu na adresu odesilatele tebou
prectenych dat! Tedy kdyz prectes data a nasledne nejaka odesles,
budou ty odeslana data poslana automaticky tam, odkud UDP pozadavek
prisel. pokud chces odesilat jinam, jednoduse opet zavolej connect a
nastav si cilovou adresu jakou chces.  



--
Lukas Gebauer.

E-mail: gebauerl@mlp.cz
http://www.ararat.cz/synapse/ - Ararat Synapse - TCP/IP Lib.